package com.company.sendemo.basics.akJavaString.regularexpression;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class expression3 {
    public static void main(String[] args) {
        String scanStr ="https://zhidao.baidu.com/question/345462853.html";
        //url判断
        urlone(scanStr); //只有http
        urltwo(scanStr);//http,https,ftp

        //ip判断
        ipone();

        //邮箱判断 以.cn  .com结尾的邮箱
        String mail = "";
        email(mail);
        
        //11位手机号
        String number = "15658948755";
        phoneone(number);
        phonetwo(number);
    }

    /**
     * 已知道开发 号码段
     * 移动：134、135、136、137、138、139、150、151、157(TD)、158、159、187、188
     * 联通：130、131、132、152、155、156、185、186
     * 电信：133、153、180、189、(1349卫通)
     * @param number
     */
    private static void phonetwo(String number) {
        Pattern p = Pattern.compile("^((13[0-9])|(15[^4])|(18[0-9])|(17[0-9])|(147))d{8}$");

        Matcher m = p.matcher(number);

        System.out.println("手机号"+m.matches());
//        return m.matches();

    }

    /**
     * 判断以1开头的11位手机号
     */
    private static void phoneone(String number) {
        if(number.matches("^1\\d{10}$")) {
            System.out.println("手机号ok");
        }else
            System.out.println("手机号no");
    }

    private static void email(String str) {
        // 以.cn结尾的邮箱
        if(str.matches("[a-zA-Z0-9]{6,36}@[a-zA-Z0-9]{3,10}(\\.com)?(\\.cn)")
                ||str.matches("[a-zA-Z0-9]{3,10}@[a-zA-Z0-9]{1,36}(\\.com)")) {
            System.out.println("邮箱格式ok");
        }else
            System.out.println("邮箱格式no");
    }


    private static void ipone() {

        String rexp = "([1-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3}";
        String addr = "11111.1.1.1";
        System.out.println("ip 1.1.1.1"+"1.1.1.1".matches(rexp));
        System.out.println("ip 11.1.1.1"+"11.1.1.1".matches(rexp));
        System.out.println("ip 111.1.1.1"+"111.1.1.1".matches(rexp));
        System.out.println("ip 1111.1.1.1"+"11111.1.1.1".matches(rexp));
    }

    private static void urlone(String scanStr) {
        Pattern pattern= Pattern.compile("http://(([a-zA-z0-9]|-){1,}\\.){1,}[a-zA-z0-9]{1,}-*");
        Matcher matcher=pattern.matcher(scanStr);
        if(matcher.find()){
            System.out.println(scanStr+"扫描结果为网址！");
        }else {
            System.out.println(scanStr+"格式错误！");
        }
    }

    /**
     * （1）验证http,https,ftp开头
     * （2）验证一个":"，验证多个"/"
     * （3）验证网址为 xxx.xxx
     * （4）验证有0个或1个问号
     * （5）验证参数必须为xxx=xxx格式，且xxx=空    格式通过
     * （6）验证参数与符号&连续个数为0个或1个
     * @param scanStr
     */
    private static void urltwo(String scanStr) {
        String regex = "^([hH][tT]{2}[pP]:/*|[hH][tT]{2}[pP][sS]:/*|[fF][tT][pP]:/*)(([A-Za-z0-9-~]+).)+([A-Za-z0-9-~\\/])+(\\?{0,1}(([A-Za-z0-9-~]+\\={0,1})([A-Za-z0-9-~]*)\\&{0,1})*)$";
        Pattern pattern = Pattern.compile(regex);
        if (pattern.matcher(scanStr).matches()) {
            System.out.println(scanStr+"是正确的网址");
        } else {
            System.out.println(scanStr+"非法网址");
        }
    }
}
